package com.quanyan.stadiumScheduler.service;

import com.quanyan.stadiumScheduler.entity.TbGameEvent;
import com.quanyan.stadiumScheduler.entity.vo.StadiumNotifyMsg;

import java.util.List;

/**
 * 用于定时进行一些数据刷新
 *
 *
 *
 * */
public interface DataReductionService {

    /**
     * 实时刷新, 推荐开始前1小时的比赛
     *
     * @return APIResponse null
     * */
    void gameBeforeOneHourEventStartRemind(int min);

    /**
     * 实时刷新比赛数量
     *
     *
     * @return APIResponse null
     * */
    void updateGameEventMsg();

    /**
     * 获取一赛事下报名用户集合,俱乐部报名的获取管理员+代表队+主席的集合
     *
     * */
    List<Integer> queryUidsFromTbGameEvent(TbGameEvent tbGameEvent);

    /**
     * 记录用户个人的赛程,初始化
     *
     * @param stadiumNotifyMsg
     *
     * @return APIResponse null
     * */

    void userGameScheduleInit(StadiumNotifyMsg stadiumNotifyMsg);

    /**
     * 更新用户赛程的基本信息,更新
     *
     *
     * @return APIResponse null
     * */

    void userGameScheduleUpdate(StadiumNotifyMsg stadiumNotifyMsg);

    /**
     * 记录用户个人比分最终状态,最后
     *
     *
     * @return APIResponse null
     * */

    void userGameScheduleFinally(StadiumNotifyMsg stadiumNotifyMsg);
    /**
     * 官方赛事结束,调起用户数据统计
     * 该方法比较复杂,其中涉及到多个层面的操作
     *
     *
     * @return APIResponse null
     * */
    void userGameEventCollect(StadiumNotifyMsg stadiumNotifyMsg);


    /**
     * 某一轮次结束,开始调起一些列推送,对当前轮次,或者上一轮进行处理
     *
     *
     * @return APIResponse null
     * */
    void generateCurrentRoundPushMsgAndMQ(StadiumNotifyMsg stadiumNotifyMsg);

    /**
     *  一个赛事结束以后,消息推送
     *
     *  @param stadiumNotifyMsg
     *
     *  @return
     *
     * */
    void officialGameEventPushMsg(StadiumNotifyMsg stadiumNotifyMsg);

    /**
     *  一个赛事结束以后,数据汇总
     *
     *  @param stadiumNotifyMsg
     *
     *  @return
     *
     * */
    void officialGameEventCollectMsg(StadiumNotifyMsg stadiumNotifyMsg);

    /**
     *  一个赛事结束以后,开始记录该积分的积分,然后更新到排名表
     *
     *  @param stadiumNotifyMsg
     *
     *  @return
     *
     * */
    void officialGameEventTeamJoinUpdate(StadiumNotifyMsg stadiumNotifyMsg);

}
